package com.means.polymerize.common.lang;

import com.github.pagehelper.PageInfo;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 表格分页数据对象
 *
 * @param <T> the type parameter
 * @author ruoyi
 */
@Data
@Accessors(chain = true)
@SuppressWarnings("unused")
public class TableDataInfo<T> implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    
    /**
     * 总记录数
     */
    private long total;

    /**
     * 列表数据
     */
    private List<T> rows;

    /**
     * 分页
     *
     * @param list  列表数据
     * @param total 总记录数
     */
    public TableDataInfo(List<T> list, long total) {
        this.rows = list;
        this.total = total;
    }

    /**
     * 生成分页数据
     *
     * @param list the list
     * @return the data table
     */
    public static <T> TableDataInfo<T> generate(List<T> list) {
        return new TableDataInfo<>(list, new PageInfo<>(list).getTotal());
    }

    /**
     * 创建分页数据
     *
     * @param list  the list
     * @param total the total
     * @return the data table
     */
    public static <T> TableDataInfo<T> create(List<T> list, long total) {
        return new TableDataInfo<>(list, total);
    }
}
